[アップデート] セキュリティグループを別の VPC で使えるようになりました
いわさです。
今朝の AWS API のアップデートみましたか。これ。
セキュリティグループを VPC に関連付け出来るようになったらしいのです。
どういうことだろう。VPC 内で共通で適用されるセキュリティグループが登場したのか?と思ったのですが、どうやら別の VPC 内でセキュリティグループを使えるようにするアップデートのようです。
What's New アナウンスも出ていました!
これは驚きですね。
これまではセキュリティグループは VPC に関連付けして作成し、その VPC 内の EC2 や ENI にアタッチする形でした。
異なる VPC 間のセキュリティグループで ID の参照は出来ましたが、インスタンスやネットワークインターフェースへのアタッチは出来ませんでした。
そのため、同じセキュリティグループを別の VPC で使いたい場合は、例えば次のような方法でコピーする必要がありました。
今回のアップデートで複数の VPC でセキュリティグループを共有出来るようになりました。
一部マネジメントコンソールからでも動作するので確認した様子を紹介します。
セキュリティグループの作成
まずは VPC を普通に作成します。従来どおりどの VPC に作成するのかも指定しますね。これが無くなるわけではないみたいだ。
作成する時には特にそれっぽい設定は見当たりません。
作成された VPC を確認してみると次のような「VPC associations」というタブが確認出来ました。これっぽいですね。
セキュリティグループを別 VPC に関連付けしていく形か。(隣の Sharing タブも気になるが...)
「Associate VPC」ボタンで関連付けが出来そうです。
まずは自分の VPC を設定してみます。
これはエラーになりました。
続いて別の VPC を作成してそれを指定してみました。そうしたところ関連付けが出来ました。おぉ...
別 VPC で使ってみる
よし、と思ってその別 VPC で EC2 インスタンスを作成してみようとしたのですが、私が試した時点の東京リージョンでは、まだ EC2 も ENI もマネジメントコンソール上で既存セキュリティグループの選択が出来ませんでした。
そこで AWS CLI を使って試してみます。マネジメントコンソールの反映が少し遅れるパターン、よくありますからね。
以下で指定しているセキュリティグループ ID sg-01d38e615d6fbf6fc
は先程作成したセキュリティグループです。
これはサブネット subnet-0eec1aca915cbeae2
が所属する VPC に存在しているセキュリティグループではありません。
% cat hoge.json
{
"ImageId": "ami-03f584e50b2d32776",
"InstanceType": "t2.micro",
"KeyName": "hoge",
"SecurityGroupIds": [
"sg-01d38e615d6fbf6fc"
],
"SubnetId": "subnet-0eec1aca915cbeae2"
}
% aws ec2 run-instances --cli-input-json file://hoge.json
{
"Groups": [],
"Instances": [
:
],
"OwnerId": "123456789012",
"ReservationId": "r-0eaa1ed32268cade0"
}
おお、普通に成功しました。
インスタンスを確認してみます。
すごい、違う VPC 同士で同じセキュリティグループを使っている。
ちなみにセキュリティグループを別 VPC に関連付けしていない状態でインスタンス作成しようとすると次のようになります。普通はこうですよね。
% aws ec2 run-instances --cli-input-json file://hoge.json
An error occurred (InvalidParameter) when calling the RunInstances operation: Security group sg-0007495107f046da0 and subnet subnet-0eec1aca915cbeae2 belong to different networks.
別 VPC への関連付けの解除
VPC 関連付け解除を試してみます。
次のボタンから操作出来ます。
解除しようとすると、もうこの VPC で使えなくなるよーと言われますね。
ただ、今はまだ別 VPC で使用しているインスタンスが存在するため、解除操作に失敗しました。
良いですね、ちゃんと見てくれている。
インスタンスを削除した後であれば、期待どおり解除出来ました。
さいごに
本日はセキュリティグループを別の VPC で使えるようになっていたので試してみました。
これやりたかった人いると思うので試してみてください。従来の AWS のセキュリティグループの設計が変わっちゃうのかな。
なお、AWS 公式ドキュメントはまだ更新されていないのですが、AWS API ドキュメントからの情報によると次のような制限事項があるようです。
- セキュリティグループを関連付ける別 VPC は同じリージョン内にある必要がある
- デフォルトのセキュリティグループでは使えない
- デフォルトの VPC では使えない
試しにデフォルトセキュリティグループで試そうとしたところ次のような画面表示となっていました。なるほど。